10579. Числа Фибоначчи
Числа
Фибоначчи задаются рекуррентным соотношением:
f(1) = 1, f(2) = 1, f(n) = f(n – 1) + f(n – 2)
Вход.
Каждая строка содержит целое неотрицательное n.
Выход. Для
каждого входного n вывести n - ое число Фибоначчи (значение f(n)).
Известно, что f(n) содержит не более 1000 знаков.
3
100
Пример выхода
2
354224848179261915075
длинная арифметика + числа Фибоначчи
Воспользуемся классом BigInteger.
Для каждого входного n вычислим
значение f(n), используя приведенную в условии рекуррентную формулу.
Положим длину чисел MAXLENGTH
равной 1001.
#define MAXLENGTH 1001
Читаем входное значение n. Изначально положим a = f(0)
= 0, b = f(1) = 1. Во вложенном цикле while после выполнения i - ой итерации имеют место соотношения:
a = f(i), b = f(i + 1). Выполнив цикл n раз, выводим a = f(n).
BigInteger
a(0),b(1),temp(0);
int n;
while(scanf("%d",&n)
== 1)
{
a = BigInteger(0); b = BigInteger(1);
while(n--)
temp = a,a = b,b = temp + a;
a.print();
}